// components/dd-acti/dd-acti-add/index.js
var dayjs = require('dayjs');
Component({

  /**
   * 组件的属性列表
   */
  properties: {
    formData: {type: Object, value: {}, observer: 'updateFormData',},
  },

  /**
   * 组件的初始数据
   */
  data: {
    actiTitleFocus: true,
    form: {
      // 活动序号
      actiId: 0,
      // 活动标题
      actiTitle: '',
      // 活动日期
      actiDate: dayjs().format('YYYYMMDD'),
      // 活动日期展示
      actiDate_label: dayjs().format('YYYY-MM-DD'),
      // 活动开始时间
      actiBegnTime: '1900',
      // 活动开始时间展示
      actiBegnTime_label: '19:00',
      // 活动结束时间
      actiEndTime: '2000',
      // 活动结束时间展示
      actiEndTime_label: '20:00',
      // 注意事项
      actiMemo: '',
      // 活动图片
      fileList: [],
      // 活动图片文件序号列表
      actiFileIdList: '',
    },
    // 活动日期-展示弹出层标识
    showActiDate: false,
    // 活动时间-展示弹出层标识
    showActiTime: false,
    // 活动时间-弹出层控件绑定值
    currActiTime: '19:00',
    // 活动时间-弹出层控件修改时间类型（1-开始时间、2-结束时间、3-活动方式开始时间、4-活动方式结束时间）
    currActiTimeType: 1,
    // 活动时间-弹出层控件展示样式
    formatterTime(type, value) {
      if (type === 'hour') {
        return `${value} 时`;
      }
      if (type === 'minute') {
        return `${value} 分`;
      }
      return value;
    },
    // 活动时间-弹出层控件过滤项
    filterTime(type, options) {
      if (type === 'minute') {
        return options.filter((option) => option % 5 === 0);
      }
      return options;
    },
  },

  /**
   * 组件的方法列表
   */
  methods: {
    updateFormData(newValue) {
      if (JSON.stringify(newValue) != "{}") {
        this.setData({ form: newValue })
      }
    },
    // 活动日期-弹出层展示
    onShowActiDate() {
      this.setData({ showActiDate: true });
    },
    // 活动日期-弹出层关闭或者点击取消
    onCloseActiDate() {
      this.setData({ showActiDate: false });
    },
    // 活动日期-弹出层点击确认
    onConfirmActiDate(event) {
      this.setData({
        showActiDate: false,
        'form.actiDate': dayjs(event.detail).format('YYYYMMDD'),
        'form.actiDate_label': dayjs(event.detail).format('YYYY-MM-DD'),
      });
    },
    // 打开时间选择器-开始时间、结束时间
    onShowActiTime(event) {
      // 将form中的开始结束时间 回填至currActiTime
      let currActiTime = "";
      const currActiTimeType = event.currentTarget.dataset.operation;
      if (currActiTimeType == 1) {
        currActiTime = this.data.form.actiBegnTime_label;
      } else if (currActiTimeType == 2) {
        currActiTime = this.data.form.actiEndTime_label;
      }
      this.setData({
        showActiTime: true,
        currActiTime: currActiTime,
        currActiTimeType: currActiTimeType
      });
    },
    // 关闭时间选择器
    onCloseActiTime() {
      this.setData({ showActiTime: false });
    },
    // 时间选择器-点击确认
    onConfirmActiTime(event) {
      // 将选择好的时间回填至currActiModeList
      if (this.data.currActiTimeType == 1) {
        this.setData({
          'form.actiBegnTime': event.detail.replace(":", ""),
          'form.actiBegnTime_label': event.detail,
          showActiTime: false
        });
      } else if (this.data.currActiTimeType == 2) {
        this.setData({
          'form.actiEndTime': event.detail.replace(":", ""),
          'form.actiEndTime_label': event.detail,
          showActiTime: false
        });
      } else if (this.data.currActiTimeType == 3) {
        for (const item of this.data.currActiModeList) {
          if (item.actiMode == this.data.currActiMode) {
            item.actiBegnTime = event.detail.replace(":", "");
            item.actiBegnTime_label = event.detail;
          }
        }
        this.setData({
          currActiModeList: this.data.currActiModeList,
          showActiTime: false
        });
      } else if (this.data.currActiTimeType == 4) {
        for (const item of this.data.currActiModeList) {
          if (item.actiMode == this.data.currActiMode) {
            item.actiEndTime = event.detail.replace(":", "");
            item.actiEndTime_label = event.detail;
          }
        }
        this.setData({
          currActiModeList: this.data.currActiModeList,
          showActiTime: false
        });
      }
    },
    // 活动标题-数据绑定
    onChangeToUpdActiTitle(event) {
      this.setData({ 'form.actiTitle': event.detail });
    },
    // 注意事项-数据绑定
    onChangeToUpdActiMemo(event) {
      this.setData({ 'form.actiMemo': event.detail });
    },
    // 下一步
    onClickToNextStep() {
      this.triggerEvent('nextStep', this.data.form);
    },
  },
  lifetimes: {
    attached: function() {
      // 在组件实例进入页面节点树时执行
      if (JSON.stringify(this.properties.formData) != "{}") {
        this.setData({ form: this.properties.formData, actiTitleFocus: false })
      }
    },
    detached: function() {
      // 在组件实例被从页面节点树移除时执行
    },
  },
})